import numpy as np
import numpy_financial as npf
import matplotlib.pyplot as plt

'''
如下示例：
利率为6.5% 除以12可得到每月利率
贷款期限为20年 乘以12可得出付款的期数
借款金额为 $250000
'''

num_money = npf.pmt(0.065 / 12, 20*12 ,250_000)


def monthly_payment():
    '''获取输入后，使用npf.pmt函数计算每月还款额'''

    # 计算月利率
    s = 'Enter rate as a yearly percentage fig: '
    rate = (float(input(s)) / 100) / 12

    # 计算付款期数
    nyears = int(input('Enter number of years: '))
    nper = nyears * 12

    # 获取贷款额
    pv = float(input('Enter amount of loan: '))

    # 输出结果
    payment = -1 * npf.pmt(rate,nper,pv)
    print('The monthly payment is: $%.2f'%payment)

# monthly_payment()


'''numpy_financial函数也可用来计算每月还款哪一部分用于本金，哪一部分用于利息'''

# 设置基础参数
rate_s = 0.05 / 12  # 年利率为 5%
nper_s = 30 * 12   # 贷款时间为 30年
pv_s = 155_000  # 贷款总额为 $155000

# 计算还款额
Total = -1 * npf.pmt(rate_s,nper_s,pv_s)

# 绘制每月归还本金占总还款额的比例曲线
A = np.linspace(0,nper_s)
B = -1 * npf.ppmt(rate_s,A,nper_s,pv_s) / Total  # ppmt 每期支付之本金
C = -1 * npf.ipmt(rate_s,A,nper_s,pv_s) / Total  # ipmt 每期支付之利息
plt.plot(A,B)
plt.plot(A,C)

# 使用 xticks 和 yticks 函数调整数轴
plt.xticks(np.arange(0,361,60),('2020','2025','2030','2035','2040','2045','2050'))
plt.yticks(np.arange(0.0,1.1,0.2),('0','20%','40%','60%','80%','100%'))

# 为数轴添加标签并显示
plt.xlabel('Years')
plt.ylabel('Percentage Applied to Principal')
plt.show()






